Removing an MFN from the p2m requires it to be flushed from the
guest's TLBs on HAP, like we do when we're using shadows.
Signed-off-by: Tim Deegan <Tim.Deegan@citrix.com>
hap_write_p2m_entry(struct vcpu *v, unsigned long gfn, l1_pgentry_t *p,
mfn_t table_mfn, l1_pgentry_t new, unsigned int level)
{
+ uint32_t old_flags;
+
hap_lock(v->domain);
+ old_flags = l1e_get_flags(*p);
safe_write_pte(p, new);
+ if ( (old_flags & _PAGE_PRESENT)
+ && (level == 1 || (level == 2 && (old_flags & _PAGE_PSE))) )
+ flush_tlb_mask(v->domain->domain_dirty_cpumask);
+
#if CONFIG_PAGING_LEVELS == 3
/* install P2M in monitor table for PAE Xen */
if ( level == 3 )